A graphical user interface (GUI) is a means of controlling a computer application through the use of icons, buttons, and pointers. The user of a GUI typically uses a computer mouse and keyboard to submit commands to the desired application. In response to these commands, the application typically performs some processing and may optionally update the computer's display. Responsiveness is measured by how much time it takes for the computer to process the user command, otherwise known as the message. Responsiveness is an important consideration in measuring the usability of a GUI application, and in determining the usability of a computer system as a whole. Measuring the usability of a computer system is desirable diagnose and potentially prevent a poor user experience.
Measuring application or system-wide responsiveness has traditionally been achieved by one of two methods. The first method is to gauge responsiveness indirectly by measuring CPU usage, disk I/O throughput, memory usage, network bandwidth, or other hardware usage indicators. Once certain thresholds are crossed, insufficient resource levels may indicate a decrease in overall system performance, and consequently a decrease in responsiveness. This method is flexible because it does not require application specific knowledge. However, this method does not actually directly measure responsiveness, and therefore is an inaccurate and unreliable.
The second method of measuring application responsiveness is to gauge responsiveness of known functions performed by known applications in response to a known user input. This is achieved by measuring the time elapsed between a known input is received and the corresponding result is displayed. While this method measures actual response time, the method is application specific, making it difficult to generalize. For example, by knowing that the key sequence “ctrl+f” will cause a word processing application to display a “find” dialog box, it is possible to measure the time elapsed between the “ctrl+f” and when the resulting “find” dialog box is displayed. However, a web browser application may respond to the same “ctrl+f” input with a different “find” dialog box that might not be found, or no dialog box at all. In either case, knowledge of the word processor application is application specific, and does not enable measuring responsiveness of any other application. Because this method of measurement requires knowledge of application specific semantics, it is cumbersome, expensive, and must constantly be updated as new applications are released.
Unfortunately, developing application specific measures of responsiveness increases the cost and complexity of measuring system-wide responsiveness, and it would be impractical to implement application specific measures for all existing and yet to be developed applications. Also, measuring system-wide application responsiveness indirectly by measuring available system resources is inaccurate.